package com.financing.platform.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.financing.platform.dto.CountInfoDTO;
import com.financing.platform.vo.AuthUserDetailedListVO;
import com.financing.platform.vo.OrderDetailedListVO;
import com.financing.platform.vo.SalesPerformanceVO;

public interface ICountInfoDao extends IBaseDao  {

	/**
	 * 
	 * @Title: queryCountInfoList
	 * @Description: 查询统计信息 
	 * @param @param countInfoDTO
	 * @param @return   
	 * @return List<CountInfoDTO>   
	 * @throws
	 */
	public List<CountInfoDTO> queryCountInfoList(Map<String,Object> params);
	
	/**
	 * 
	 * @Title: addCountInfo
	 * @Description: 添加统计信息 
	 * @param @param countInfoDTO
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int addCountInfo(CountInfoDTO countInfoDTO) throws SQLException;
	
	/**
	 * 
	 * @Title: updateCountInfo
	 * @Description: 更新统计信息 
	 * @param @param countInfoDTO
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int updateCountInfo(CountInfoDTO countInfoDTO) throws SQLException;
	
	/**
	 * 
	 * @Title: registPersonCount
	 * @Description: 统计注册人数 
	 * @param @return   
	 * @return int   
	 * @throws
	 */
	public int registPersonCount()throws SQLException;
	
	/**
	 * 
	 * @Title: registVerifyPass
	 * @Description:  统计注册审核通过人数 
	 * @param @return   
	 * @return int   
	 * @throws
	 */
	public int registVerifyPass()throws SQLException;
	
	/**
	 * 
	 * @Title: registVerifyNoPass
	 * @Description: 统计理财师未通过认证人数 
	 * @param @return   
	 * @return int   
	 * @throws
	 */
	public int registVerifyNoPass()throws SQLException;
	
	/**
	 * 
	 * @Title: orderPerSuccessPerson
	 * @Description:   统计订单预约成功的人数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPerSuccessPerson() throws SQLException;
	
	/**
	 * 
	 * @Title: orderPerFailPerson
	 * @Description: 统计订单预约失败的人数  
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPerFailPerson() throws SQLException;
	
	/**
	 * 
	 * @Title: orderRebateSuccessPerson
	 * @Description: 统计订单返佣成功的人数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderRebateSuccessPerson() throws SQLException;
	
	/**
	 * 
	 * @Title: orderCancelPerson
	 * @Description: 统计订单取消的人数  
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderCancelPerson() throws SQLException;
	
	/**
	 * 
	 * @Title: orderPerSuccess
	 * @Description: 统计订单预约成功的笔数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPerSuccess() throws SQLException;
	
	/**
	 * 
	 * @Title: orderPerFail
	 * @Description: 统计订单预约失败的笔数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPerFail() throws SQLException;
	
	/**
	 * 
	 * @Title: productOrderRebateSuccess
	 * @Description: 统计订单返佣成功的笔数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int productOrderRebateSuccess() throws SQLException;
	
	/**
	 * 
	 * @Title: productOrderCancel
	 * @Description: 统计订单取消的笔数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int productOrderCancel() throws SQLException;
	
	/**
	 * 
	 * @Title: orderPerPerson
	 * @Description: 订单预约人数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPerPerson() throws SQLException;
	
	/**
	 * 
	 * @Title: orderPer
	 * @Description: 订单预约数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int orderPer() throws SQLException;
	
	/**
	 * 
	 * @Title: forWardNum
	 * @Description: 转发数 
	 * @param @return
	 * @param @throws SQLException   
	 * @return int   
	 * @throws
	 */
	public int forWardNum() throws SQLException;
	
	/**
	 * 
	 * @Title: queryTotalCount
	 * @Description: 查询注册用户等总数 
	 * @param @return   
	 * @return Map<String,Object>   
	 * @throws
	 */
	public Integer queryTotalCount(String statement) throws SQLException;
	
	
	/**
	 * 
	* @Title: OrderDetailedList 
	* @Description: 查询订单清单-list
	* @param   orderDetailedListVO
	* @param @return    
	* @returnList<OrderDetailedListVO>   
	* @throws
	 */
	public List<OrderDetailedListVO> queryOrderDetailedList(OrderDetailedListVO orderDetailedListVO)throws SQLException;
	
	/**
	 * 
	* @Title: OrderDetailedListCount 
	* @Description: 查询订单清单-list count
	* @param   orderDetailedListVO
	* @param @return    
	* @returnList<OrderDetailedListVO>  
	* @throws
	 */
	public int queryOrderDetailedListCount(OrderDetailedListVO orderDetailedListVO)throws SQLException;
	/**
	 * 
	* @Title: queryAuthUserDetailedList 
	* @Description: 查询认证用户清单-list 
	* @param   authUserDetailedListVO
	* @param @return    
	* @return  List<AuthUserDetailedListVO>
	* @throws
	 */
	public List<AuthUserDetailedListVO> queryAuthUserDetailedList(
			AuthUserDetailedListVO authUserDetailedListVO)throws SQLException;
  /**
	* 
	* @Title: queryAuthUserDetailedListCount 
	* @Description: 查询认证用户清单-list count
	* @param   authUserDetailedListVO
	* @param @return    
	* @return  List<AuthUserDetailedListVO>
	* @throws
	*/
	public int queryAuthUserDetailedListCount(
			AuthUserDetailedListVO authUserDetailedListVO)throws SQLException;

	public List<SalesPerformanceVO> querySalesPerformanceOrder(SalesPerformanceVO salesPerformanceVO)	throws SQLException;

	public List<SalesPerformanceVO> querySalesPerformanceRegister(SalesPerformanceVO salesPerformanceVO)	throws SQLException;

	public List<SalesPerformanceVO> querySalesPerformanceVisit(SalesPerformanceVO salesPerformanceVO)	throws SQLException;

	public List<SalesPerformanceVO> queryAccountFinancialCount(SalesPerformanceVO salesPerformanceVO) throws SQLException;

	//合并 老系统
    /**
     * 运营统计报表
     * @return
     * @throws SQLException
     */
    public List<Map<String, Object>> queryOperateStatistics()throws SQLException;
    /**
	 *  订单 -月销售统计
	 * @return
	 * @throws SQLException
	 */
	public List<Map<String, Object>> queryOrderCountByMonth() throws SQLException;
	/**
	 *  订单用户占认证比例
	 * @return
	 * @throws SQLException
	 */
	public Map<String, Object> queryOrderUserPer() throws SQLException;
	/**
	 *  理财师总销量top 
	 * @return
	 * @throws SQLException
	 */
	public List<Map<String, Object>> queryUserTotalSales(CountInfoDTO countInfo) throws SQLException;
    /**
     * 根据月份查询注册用户数
     * @param params
     * @return
     */
    public List<Map<String, Object>> queryFaUserRegisterByMonthCount(Map<String,Object> params) throws SQLException;
    
	/**
	 * 查询不同审核状态的用户数
	 * @param params
	 * @return
	 * @throws SQLException
	 */
    public List<Map<String, Object>> queryFaUserRoleCount(Map<String,Object> params) throws SQLException;
    
    /**
	 * 查询所有的用户数
	 * @param params
	 * @return
	 * @throws SQLException
	 */
    public List<Map<String, Object>> queryFaUserCount(Map<String,Object> params) throws SQLException;

	/**
	 * 认证-理财师role占比
	 * @param params
	 * @return
	 * @throws SQLException
	 */
	public List<Map<String, Object>> queryFaUserRoleProportion(Map<String, Object> params) throws SQLException;

	/**
	 * 订单-认证理财师role占比
	 * @param params
	 * @return
	 * @throws SQLException
	 */
	public List<Map<String, Object>> queryOrderFaUserRoleProportion(Map<String, Object> params) throws SQLException;

}
